home *** CD-ROM | disk | FTP | other *** search
/ Brotikasten / BROTCD01.iso / geos / geos9.d64 / techman fixes < prev   
Text File  |  1995-08-05  |  10KB  |  205 lines

  1.                          
  2.  
  3.  
  4.  
  5.                    ╟┼╧╙ ├╧╬╓┼╥╘ ╒╘╔╠╔╘┘ ╞╔╠┼ ╙╘╥╒├╘╒╥┼
  6.  
  7. ╘HE ╟┼╧╙ CONVERT PROGRAM IS USED TO CONVERT ╟┼╧╙ ╓╠╔╥ AND ╙┼╤ STRUCTURE FILES TO ├OMMODORE ╙┼╤ STRUCTURE FILES. ╫ITHIN THE ├OMMODORE ╙┼╤ FILE WHICH IS CREATED, ALL OF THE ╟┼╧╙-RELATED INFORMATION ABOUT THE FILE IS CONTAINED. ╘HIS INCLUDES THE FILE'S:
  8.  
  9.  
  10.  - DIRECTORY ENTRY
  11.  - HEADER BLOCK
  12.  - INDEX TABLE (IF FILE IS ╓╠╔╥)
  13.  - DATA BLOCKS
  14.  
  15. ├ONVERT ALSO WILL CONVERT THESE "╟┼╧╙ FORMAT IN ├OMMODORE ╙┼╤" FILES BACK TO THEIR ORIGINAL FORM.
  16.  
  17. ╫HETHER ├ONVERT IS PROCESSING A ╟┼╧╙ ╓╠╔╥ OR ╙┼╤ FILE, THE FIRST TWO BLOCKS OF THE RESULTING ├OMMODORE ╙┼╤ FILE CONTAIN THE SAME INFORMATION:
  18.  
  19. BLOCK 1: BYTES 0 AND 1 CONTAIN STANDARD
  20.          NEXT TRACK AND SECTOR POINTERS
  21.          (╬╘╙)
  22.          BYTES 2 TO 31 CONTAIN THE
  23.          FILE'S DIRECTORY ENTRY, WITH
  24.          THE FILE'S ORIGINAL NAME AND
  25.          TIME STAMP.
  26.  
  27. BLOCK 2: BYTES 0 AND 1: ╬╘╙ POINTER
  28.          BYTES 2 TO 255: BYTES 2 TO 255
  29.          OF THE FILE'S HEADER BLOCK.
  30.  
  31. ╫HEN CONVERTING ╟┼╧╙ ╙┼╤ FILES, THE REST OF THE BLOCKS IN THE RESULTING ├OMMODORE ╙┼╤ FILE ARE THE DATA BLOCKS FROM THE ╟┼╧╙ ╙┼╤ FILE.
  32.  
  33. BLOCKS 3, 4 ETC:
  34.          BYTES 0 AND 1: ╬╘╙ POINTER
  35.          BYTES 2 TO 255: BYTES 2 TO 255
  36.          OF BLOCK FROM ORIGINAL ╟┼╧╙
  37.          ╙┼╤ FILE.
  38.  
  39. LAST BLOCK:
  40.          BYTE 0 = 0
  41.          BYTE 1 = POINTER TO LAST BYTE
  42.           USED IN THIS BLOCK (=$02 TO
  43.           $FF)
  44.  
  45. ╫HEN CONVERTING ╟┼╧╙ ╓╠╔╥ FILES, THE THIRD BLOCK IN THE RESULTING ├OMMODORE ╙┼╤ FILE CONTAINS AN INDEX TABLE FOR THE FILE:
  46.  
  47. BLOCK 3:  BYTES 0 AND 1: ╬╘╙ POINTER
  48.           BYTE 2: NUMBER OF BLOCKS IN
  49.                    ╓╠╔╥ RECORD #0
  50.           BYTE 3: NUMBER OF BYTES IN
  51.                LAST BLOCK OF RECORD #0
  52.           BYTES 4,5: # BLOCKS/BYTES
  53.                  IN RECORD #1
  54.           ...AND SO ON UNTIL:
  55.           BYTES 254 AND 255: NUMBER OF
  56.             BLOCKS/BYTES FOR RECORD#126
  57. ╔F ONE OF THE BLOCK/BYTE PAIRS IS (0,0), THEN THE RECORD DOES NOT EXIST. ╔F A PAIR IS ($00,$FF) THEN THE RECORD IS EMPTY. ╘HE REMAINING BLOCKS IN THE ├OMMODORE ╙┼╤ FILE CONTAIN ALL OF THE ╓╠╔╥ RECORDS, APPENDED END-TO-END, STARTING WITH THE FIRST EXISTING RECORD (USUALLY RECORD #0). ┴DDING UP ALL OF THE "NUMBER OF BLOCKS" ENTRIES IN THE THIRD BLOCK WILL GIVE YOU THE TOTAL NUMBER OF BLOCK WHICH REMAIN.
  58.  
  59. ╘HUS IF THE ╓╠╔╥ FILE HAS TWO BLOCKS IN RECORD #0, ONE BLOCK IN RECORD #4, AND NULL POINTERS (NO BLOCKS) FOR ALL OTHER RECORDS, THEN THE RESULTING ├OMMODORE ╙┼╤ FILE WILL CONTAIN: 
  60.  
  61. ┬LOCK 1:  DIRECTORY ENTRY 
  62. ┬LOCK 2:  FILE HEADER 
  63. ┬LOCK 3:  BLOCKS/BYTES PER RECORD 
  64.           TABLE 
  65. ┬LOCK 4:  BLOCK #1 OF RECORD #0 
  66. ┬LOCK 5:  BLOCK #2 OF RECORD #0 
  67. ┬LOCK 6:  BLOCK #1 OF RECORD #4
  68.  
  69. ╬OTE THAT THE CONVERSION PROCESS DOES NOT CREATE A NEW FILE, IT SIMPLY MODIFIES THE EXISTING ╟┼╧╙ ╓╠╔╥ OR ╙┼╤ FILE SO THAT IT CONFORMS TO THE FORMAT OF A ├OMMODORE ╙┼╤ FILE. ╒SING A ╟┼╧╙ ╓╠╔╥ FILE AS AN EXAMPLE, THIS PROCESS INVOLVES:
  70.  
  71. 1) ├REATING A NEW BLOCK TO CONTAIN THE FILE'S DIRECTORY ENTRY, CHANGING THE EXISTING DIRECTORY ENTRY SO THAT THE POINTER TO THE FILE'S FIRST BLOCK NOW POINTS TO THIS NEW BLOCK. ╘HE ╬╘╙ POINTER IN THIS NEW BLOCK WILL POINT TO THE FILE'S EXISTING HEADER BLOCK.
  72.  
  73. 2) ├HANGING THE ╬╘╙ POINTER IN THE BLOCK CONTAINING THE FILE HEADER SO THAT IT POINTS TO THE FILE'S INDEX TABLE BLOCK.
  74.  
  75. 3) ├HANGING THE FILE'S INDEX TABLE BLOCK SO THAT IT HAS ACCURATE "NUMBER OF BLOCKS/BYTES" INFORMATION FOR EACH RECORD. ┴LSO, THE ╬╘╙ POINTER IN THIS BLOCK IS ALTERED TO POINT TO THE FIRST BLOCK OF THE FIRST RECORD WHICH EXISTS.
  76.  
  77. 4) ├HANGING THE ╬╘╙ POINTERS IN THE FIRST AND LAST BLOCKS OF EACH RECORD, SO THAT THE RECORDS ARE APPENDED INTO A STRING OF BLOCKS.
  78.  
  79. ┴LSO, THINK ABOUT THE REVERSE PROCESS. ├ONVERT WILL TAKE A ├OMMODORE ╙┼╤ FILE WHICH COMPLETELY DEFINES A ╟┼╧╙ ╓╠╔╥ OR ╙┼╤ FILE AND WILL CONVERT IT TO THE CORRECT STRUCTURE. ╙OFTWARE DEVELOPERS MAY FIND THIS USEFUL; IF YOU ARE USING A STANDARD ├OMMODORE ASSEMBLER WHICH CREATES ├OMMODORE ╙┼╤ FILES, THEN IF THE DATA IS SET UP RIGHT, ├ONVERT CAN BE USED TO TURN THE ├OMMODORE ╙┼╤ FILE INTO A RUNNABLE ╟┼╧╙ ╓╠╔╥ OR ╙┼╤ APPLICATION! ╫E WILL POST A NOTE IN THE FUTURE ABOUT HOW TO DO THIS.
  80.  
  81. ┴╨╨┼╬─╔╪ ├ (╨432) ├╧╥╥┼├╘╔╧╬╙...
  82.  
  83. ╘HANKS FOR ╩PP AND ═IKE╘22 FOR ALERTING ME TO SOME ERRORS ON ╨432 OF THE ╨ROG ╥EF ═ANUAL:
  84.  
  85. ─ONE╫ITH╔╧ SHOULD READ $C25F ├OPY╙TRING SHOULD READ $C265
  86.  
  87. ─┼╙╦ ┴├├┼╙╙╧╥╔┼╙ ╔╬ ┴╨╨╠╔├┴╘╔╧╬╙
  88.  
  89. ╘HIS NOTE IS FOR PEOPLE WRITING APPLICATIONS WHICH ALLOW THE USER TO RUN DESK ACCESSORIES.
  90.  
  91. ═OST ╟┼╧╙ APPLICATIONS THAT HAVE BEEN WRITTEN ARE ╓╠╔╥ MODULE SWAPPING APPLICATIONS, AND SO THE DISK CONTAINING THE APPLICATION MUST ALWAYS BE IN ONE OF THE ACTIVE DRIVES. ╘HE CONVENTION FOR PLACEMENT OF DESK ACCESSORIES IS THAT THEY MUST BE ON THE APPLICATION DISK. ╘HIS WAY, THE ─┴S WHICH APPEAR IN THE APPLICATION'S ╟┼╧╙ MENU ARE ALWAYS ACCESSIBLE. ┴PPLICATIONS OF THIS TYPE WHICH ALLOW THE USER TO LOAD DATA FROM THE OTHER DRIVE MUST KEEP TRACK OF WHICH DRIVE IS THE APPLICATION DRIVE. ╞OR EXAMPLE, ASSUME THE APPLICATION DISK IS IN DRIVE ┴ AND THE DATA DISK IS IN DRIVE ┬. ╫HEN THE APPLICATION IS RUN FROM THE DESK╘OP, ONE OF THE FIRST THINGS IT DOES IS TO READ THE DISK'S DIRECTORY, GRABBING THE NAMES OF THE ─┴S ON THAT DISK AND STUFFING THEM INTO THE ╟┼╧╙ MENU DEFINITION TABLE. ╘HEN WHEN THE USER HAS OPENED A DATAFILE WHICH IS ON THE DISK IN DRIVE ┬, AND HE SELECTS A ─┴ FROM THE MENU, THE APPLICATION MUST CALL ╧PEN─ISK TO OPEN DRIVE ┴ TO RUN THE ─┴. ╫HEN THE ─┴ FINISHES, THE APPLICATION MUST CALL ╧PEN─ISK TO RE-OPEN THE DATA DISK IN DRIVE ┬. ╔F THE SYSTEM ONLY HAS ONE DRIVE, THEN THERE IS NO PROBLEM BECAUSE THE DISK IN DRIVE ┴ CONTAINS THE APPLICATION, THE ─┴S, AND THE DATAFILE; NO DRIVE SWITCHING IS REQUIRED WHEN RUNNING ─┴S.
  92.  
  93. ╞OR APPLICATIONS WHICH RUN ENTIRELY RESIDENT IN MEMORY (NEVER SWAPPING MODULES) YOU MIGHT BE TEMPTED TO ALLOW THE USER TO REMOVE THE DISK ON A ONE-DRIVE SYSTEM AND INSERT A DIFFERENT DATA DISK. ┴PPLICATIONS SUCH AS THE ╔CON ┼DITOR ALLOW THIS. ┬UT BE SURE THAT IF YOU ALLOW THIS CAPABILITY, THAT WHEN THE ─┴ IS SELECTED ┴╬─ THE APPLICATION DISK HAS BEEN REMOVED, YOU MUST EITHER 1) NOT ALLOW THE ─┴ TO RUN, OR 2) PUT UP A DIALOG BOX REQUESTING THAT THE APPLICATION DISK BE INSERTED SO THAT THE ─┴ CAN RUN.
  94.  
  95. ═┴├╥╧╙ ╞╧╥ ╥┼╞┼╥┼╬├┼ ═┴╬╒┴╠
  96.  
  97.  
  98.  
  99. ┘OU GUYS ARE ABSOLUTELY RIGHT! ╘HE ╥EFERENCE ═ANUAL DOES NOT HAVE A PAGE DESCRIBING THE MACROS WE USE IN THE SOURCE LISTINGS. ╚ERE ARE THE 5 MOST POPULAR:
  100.  
  101. *** ╠OAD┬ ***
  102.  
  103. ╠OAD┬ IS USED TO STUFF A CONSTANT VALUE INTO A SINGLE-BYTE MEMORY LOCATION.
  104.  
  105. .MACRO ╠OAD┬ ADDR,VALUE
  106.        LDA   #VALUE
  107.        STA   ADDR .ENDM
  108.  
  109. SAMPLE USAGES:
  110.  
  111.  
  112.        ╠OAD┬ R0╚,#52
  113.        ╠OAD┬ $0001,#$35
  114.        ╠OAD┬ MOUSE┘╨OSITION,#34
  115.  
  116. *** ╠OAD╫ ***
  117.  
  118. ╠OAD╫ IS USED TO STUFF A WORD CONSTANT INTO A WORD (TWO SEQUENTIAL BYTES) MEMORY LOCATION.
  119.  
  120. .MACRO  ╠OAD╫ ADDR,VALUE
  121.         LDA   #[VALUE
  122.         STA   ADDR
  123.         LDA   #]VALUE
  124.         STA   ADDR+1 .ENDM
  125.  
  126. ╬OTE THAT THE [ CHAR IS USED TO GET THE LOW BYTE VALUE OF A WORD CONSTANT, AND ] IS USED TO GET THE HIGH BYTE VALUE...
  127.  
  128. ╙AMPLE USAGE:  ╠OAD╫ R0,#$4000
  129.  
  130. *** ═OVE┬ ***
  131.  
  132. ═OVE┬ IS USED TO COPY DATA FROM ONE MEMORY LOCATION TO ANOTHER.
  133.  
  134. .MACRO ═OVE┬ SOURCE,DEST
  135.        LDA   SOURCE
  136.        STA   DEST .ENDM
  137.  
  138. ╙AMPLE USAGE:
  139.        ═OVE┬ R0╚,R2╚   ;SET R2╚=R0╚
  140.  
  141. *** ═OVE╫ ***
  142.  
  143. ╙AME AS ═OVE┬, BUT COPIES A WORD.
  144.  
  145. .MACRO ═OVE╫ SOURCE,DEST
  146.        LDA   SOURCE
  147.        STA   DEST
  148.        LDA   SOURCE+1
  149.        STA   DEST+1 .ENDM
  150.  
  151. ╨╥╟╘╧╟┼╧╙ (├HAPTER 3) ├ORRECTIONS:
  152.  
  153. ╙EVERAL OF YOU HAVE NOTICED THAT THE ╨╥╟╘╧╟┼╧╙ UTILITY DESCRIBED IN CHAPTER 3 DOES NOT WORK. ╫ITH THE FOLLOWING CORRECTIONS, YOU SHOULD HAVE NO PROBLEM WITH IT.
  154.  
  155. ╧N PAGE 48, REPLACE THE "PSECT 400" WITH:
  156.  
  157. .PSECT $304 ;╘HE FILEHEADER DOES NOT ACTUALLY START AT $304; THIS PSECT IS NECESSARY SO THAT THE FILEHEADER OCCUPIES THE FIRST 252 BYTES OF THE ╨╥╟ FILE WHICH YOUR ASSEMBLER CREATES.
  158.  
  159. ╘HE COMMENTS BELOW "╞ILE╚EADER" SHOULD READ:
  160.  
  161. ;╘HE FIRST FOUR BYTES OF THE FILEHEADER WILL BE WRITTEN TO THE HEADER BLOCK BY THE ╨╥╟╘╧╟┼╧╙ BASIC PROGRAM DURING CONVERSION. ╞OR YOUR INFORMATION, THE FIRST FOUR BYTES WILL CONTAIN: 
  162.  
  163. ;     .BYTE $00,$FF   ;NULL POINTER 
  164.                       ;TO NEXT BLOCK 
  165. ;     .BYTE 3,21      ;ICON WIDTH AND 
  166.                       ;HE